home *** CD-ROM | disk | FTP | other *** search
/ DOpus Plus / DOpus Plus.iso / Tutorial / C Guide / RndPic_module / Config.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-06  |  2.8 KB  |  74 lines

  1.  
  2. #include "includes/Project.h"
  3. #include "includes/config.h"
  4.  
  5.  
  6. /*********************************************************************/
  7.  
  8. BOOL WriteConfig( PrefsData *pd, BOOL test )
  9. {
  10.      APTR iffhandle;
  11.                
  12.      if( (iffhandle = IFFOpen(test ? TEST_CONFIG : CONFIG_FILE, IFF_WRITE, CHUNK_ID_PROGRAM)) )
  13.        {
  14.           IFFWriteChunk( iffhandle, &version, CHUNK_ID_VERSION  , sizeof(UBYTE) );
  15.           IFFWriteChunk( iffhandle, &pd->rpd[0] , CHUNK_ID_DESKTOP  , sizeof(ULONG) + strlen(pd->rpd[0].path) );
  16.           IFFWriteChunk( iffhandle, &pd->rpd[1] , CHUNK_ID_LISTER   , sizeof(ULONG) + strlen((&pd->rpd[1])->path) );
  17.           IFFWriteChunk( iffhandle, &pd->rpd[2] , CHUNK_ID_REQUESTER, sizeof(ULONG) + strlen((&pd->rpd[2])->path) );
  18.              IFFWriteChunk( iffhandle, &pd->rpd[3] , CHUNK_ID_MAIN     , sizeof(ULONG) + strlen((&pd->rpd[3])->path) );
  19.              IFFWriteChunk( iffhandle, &pd->db     , CHUNK_ID_DELAY    , sizeof(DelayBlock) );
  20.           IFFClose( iffhandle );
  21.           return FALSE;
  22.        }        
  23.      return TRUE;
  24. }
  25.  
  26.  
  27. BOOL ReadConfig( PrefsData *pd, BOOL test )
  28. {
  29.      APTR iffhandle;
  30.      UBYTE version_in;
  31.      BOOL ret = FALSE;
  32.      
  33.      if( (iffhandle = IFFOpen(test ? TEST_CONFIG : CONFIG_FILE, IFF_READ, CHUNK_ID_PROGRAM)) )
  34.        {
  35.           if( (IFFNextChunk(iffhandle, 0)) == CHUNK_ID_VERSION )
  36.             {
  37.                IFFReadChunkBytes(iffhandle, &version_in, sizeof(UBYTE));
  38.                     
  39.                if( version_in <= version )
  40.                  {
  41.                     if( IFFNextChunk(iffhandle, CHUNK_ID_DESKTOP) )
  42.                       {
  43.                          IFFReadChunkBytes(iffhandle, pd->rpd, sizeof(RndPrefsData));
  44.                          
  45.                          if( IFFNextChunk(iffhandle, CHUNK_ID_LISTER) )
  46.                            {
  47.                               IFFReadChunkBytes(iffhandle, &pd->rpd[1], sizeof(RndPrefsData));
  48.                      
  49.                               if( IFFNextChunk(iffhandle, CHUNK_ID_REQUESTER) )
  50.                                 {
  51.                                    IFFReadChunkBytes(iffhandle, &pd->rpd[2], sizeof(RndPrefsData));
  52.                                               
  53.                                               if( IFFNextChunk(iffhandle, CHUNK_ID_MAIN) )
  54.                                      {
  55.                                         IFFReadChunkBytes(iffhandle, &pd->rpd[3], sizeof(RndPrefsData));
  56.                                                    
  57.                                                      if( IFFNextChunk(iffhandle, CHUNK_ID_DELAY) )
  58.                                           {
  59.                                                           IFFReadChunkBytes(iffhandle, &pd->db, sizeof(DelayBlock));
  60.                                              ret = TRUE;
  61.                                                       }
  62.                                      }
  63.                                 }
  64.                            }
  65.                       }
  66.                  }
  67.                IFFClose( iffhandle );
  68.             }
  69.        }
  70.      return ret;
  71. }
  72.  
  73.  
  74.